In the applicant's UK Patent No. 2281682, there is described a 3D rendering system for polygons in which each object is seen to be viewed as defined in a set of surfaces which are infinite. Each elementary area of the screen (e.g. pixel) in which an image is to be displayed has a ray projected through it from a viewpoint into the 3D scene. The location of the intersection of the projected ray with each surface is then determined. From these intersections, it is then possible to determine whether any intersected surface is visible at that elementary area. The elementary area is then shaded for display in dependence on the results of the determination. The system can be implemented in a pipeline type processor comprising a number of cells, each of which can perform an intersection calculation with a surface. Thus, a large number of surface intersections can be computed simultaneously. Each cell is loaded with a set of coefficients defining the surface for which it is to perform the intersection test.
A further arrangement is described in the applicant's UK Patent No. 2298111, in which the image is divided into sub-regions or tiles and the tiles are processed in turn. A variable tile size is used and a bounding box is projected around complete objects so that only those tiles falling within the bounding box require processing. This is done by determining the distribution of objects on the visible screen, in order for a suitable tile size to be selected. The surfaces which define the various objects are then stored in a display list, thereby avoiding the need to store identical surfaces for each tile, since one object made of many surfaces could appear in a number of tiles. Object pointers which identify the objects in the display list are also stored. There is one object pointer list per tile. The tiles can then be rendered in turn using the ray casting technique described above until all objects within each tile are processed. This is a useful method because no effort needs to be made to render objects which are known not to be visible in a particular tile.
A further arrangement is proposed in the applicant's UK Patent No. 2343603, in which any tiles within the bounding box which are not required to display a particular object are discarded before rendering.
In the existing systems described above, the processor typically includes three components. A tile accelerator unit (TA) performs the tiling operation i.e. selects a suitable tile size and divides the visible screen into tiles, and supplies the tile information i.e. the 3D object data for each tile, to the display list memory. An image synthesis processor (ISP) uses the 3D object data in the display list memory to perform the ray/surface intersection tests discussed above. This produces depth data for each elementary area of the visible screen. After this, the derived image data from the ISP is supplied to a texturing and shading processor (TSP) which applies texturing and shading data to surfaces which have been determined as visible and outputs image and shading data to a frame buffer memory. Thus, the appearance of each elementary area of the display is determined so as to represent the 3D image.
A further arrangement which is advantageous, particularly for complex scenes in which more 3D object data for each tile needs to be stored in the display list memory which results in increased storage requirements, is described in the applicant's European Patent No. 1287494. This proposes the idea of partial rendering. In EP 1287494, there is described a memory management system in which, in a tile based rendering system, blocks (pages) of memory are assigned to individual tiles for storage of object lists associated with each tile. As the 3D system determines that an object is potentially visible in a tile, data relating to that object is written to the respective object list. For complex images, the amount of data required for an object list will be greater than the size of the blocks of memory allocated to that object list. Therefore, when the amount of data stored in an object list crosses a predetermined threshold, the objects already written to the object list are rendered for that tile. Further objects may then be written to the object list until all objects have been determined to be either visible or not visible in the tile and the remaining data can be rendered (textured and shaded) ready for display.
Some objects intersect more than one tile. For these, it is usual to utilise a global object list which applies to all tiles. This contains data relating to those objects which cover a plurality of tiles and, as well as rendering data from a tile based object list for each tile, it is necessary to render data from the global tile list to determine whether or not any object is visible at any particular pixel within the tile. However, in some circumstances, the use of a global object list for an image may not be particularly efficient. This is because even for an object which intersects e.g. only two tiles, data must be written to the global object list and that processed for every tile in the screen to determine whether or not the object is visible in each tile in the screen.
Preferably, the size of the global list is reduced by associating a number of global lists with macro tiles each comprising a plurality of tiled regions on the screen, but not with the whole screen. Conventionally, memory pages are each associated with macro tiles on the screen in determining how much memory to use for a macro tile. Thus, the memory pages are managed for individual tiles within a macro tile in such a manner that, when a tile is rendered, then at least one page of memory will be freed for re-use.